package com.agritech.command;

import com.agritech.machine.AgriculturalMachine;

/**
 * 执行任务命令
 * 命令模式的具体命令实现，封装了农机执行任务的操作
 */
public class PerformTaskCommand implements Command {
    private AgriculturalMachine machine;
    private String taskDetails;
    
    public PerformTaskCommand(AgriculturalMachine machine, String taskDetails) {
        this.machine = machine;
        this.taskDetails = taskDetails;
    }
    
    @Override
    public void execute() {
        System.out.println("执行命令: 农机 " + machine.getId() + " 执行任务 '" + taskDetails + "'");
        machine.performTask(taskDetails);
    }
    
    @Override
    public void undo() {
        // 执行任务的撤销操作可能比较复杂，例如回滚状态或执行反向任务
        // 这里简化为打印一条消息
        System.out.println("撤销命令: 农机 " + machine.getId() + " 任务 '" + taskDetails + "' 的撤销操作未具体实现");
    }

    @Override
    public String getDescription() {
        return "农机 " + machine.getType() + " (ID: " + machine.getId() + ") 执行任务: " + taskDetails;
    }
}